package year2019.month08910;

import java.math.BigInteger;

/**
 * @desc
 *
 * 阶乘位数
 *
 * 9的阶乘等于：362880
 * 它的二进制表示为：1011000100110000000
 * 这个数字共有19位。
 *
 * 请你计算，9999 的阶乘的二进制表示一共有多少位？
 * 118445
 *
 * create on 2018/10/8 by watson
 */
public class MainTest01 {

    public static void main(String[] args){
        System.out.println(fun(9999));
    }

    public static long fun(int size){
        BigInteger num = new BigInteger("1");
        for (int i=1; i<=size; i++){
            num = num.multiply(new BigInteger(String.valueOf(i)));
        }
        System.out.println(num);
        Integer length = 1;
        BigInteger num2 = new BigInteger("2");
        while (!num.equals(new BigInteger("1"))){
            num = num.divide(num2);
            length++;
        }

        return length;
    }

}
